package game;

import java.util.*;

import controllers.GameControler;
import classes.city.City;
import classes.deck.InfectionDeck;
import classes.deck.PlayerDeck;
import classes.diseases.Disease;
import classes.players.Medic;
import classes.players.OperationsExpert;
import classes.players.Player;
import classes.players.Researcher;
import classes.players.Scientist;
import classes.players.Generic;
import factory.Factory;

public class Game {

	private static Game instance = new Game();
	private static int turnIndex = 0;
	private final static int NUMBER_OF_PLAYERS = 2;
	private final static int NUMBER_OF_ACTIONS = 4;
	private static GameControler gameControler;
	
	private HashMap<String, Player> players;
	private HashMap<String, Disease> diseases;
	private HashMap<String, City> cities;
	private PlayerDeck playerDeck;
	private InfectionDeck infectionDeck;

	private Game() {
		this.players = new HashMap<String, Player>();
		this.diseases = Factory.createDisease();
		this.cities = Factory.createCities();
		this.playerDeck = Factory.createPlayerDeck();
		this.infectionDeck = Factory.createInfectionDeck();
	};
	
	public static int getNumberOfActions() {
		return NUMBER_OF_ACTIONS;
	}
	
	public static int getNumberOfPlayers() {
		return NUMBER_OF_PLAYERS;
	}
	
	public static Game getInstance() {
		return instance;
	}
	
	public static int getTurnIndex() {
		return turnIndex;
	}
	
	public static GameControler getGameControler() {
		return gameControler;
	}
	
	public HashMap<String, Player> getPlayers() {
		return players;
	}
	
	public HashMap<String, City> getCities() {
		return cities;
	}
	
	public HashMap<String, Disease> getDiseases() {
		return diseases;
	}
	
	public InfectionDeck getInfectionDeck() {
		return infectionDeck;
	}
	
	public PlayerDeck getPlayerDeck() {
		return playerDeck;
	}

}
